package polymorphic;

/**
 * @author : niu niu
 * @version : 1.0.0
 * @date : 2022/9/18 17:39
 * 方法重写的规则
 *      方法重载：同一个类中，方法名相同，参数列表（类型，数量）不同，与返回值无关的一组方法，称为方法重载
 *      方法重写：发生在有继承关系的两个类直接，子类定义了和父类除了权限不同（子类 >=  父类），返回值可以为向上转型类的返回值之外，
 *               参数列表，方法名完全相同的方法，称为方法重写
 *
 *               私有方法不能被覆写，子类并不可见父类的private的方法
 *               被final修饰，也不可以被重写
 *               static修饰的静态方法不可以被重写，重写和父类子类对象之间有关，而static是类方法，不存在这个关系
 *               构造方法不能被子类重写（名称都不同）
 *
 *               关于方法重写的返回值，必须相同（除了向上转型类的返回值之外）
 *
 *               使用注解@override来检查是否覆写成功
 */
public class Override {
    public static void main(String[] args) {
        Base base = new SubClass();
        base.test();
    }
}
class Base{
    //public
    void test(){
        System.out.println("Base类的test方法");
    }
}
class SubClass extends Base{
    //包权限<public  权限小了，覆写失败
     void test(){
        System.out.println("SubClass的test方法");
    }
}
